import router from '@/router'
export default {
  namespaced: true,
  state: {
    // 侧边导航的折叠状态
    navCollapse: false,
    // 顶部导航 tab按钮
    navTabs: sessionStorage.getItem('navTabs')
      ? JSON.parse(sessionStorage.getItem('navTabs'))
      : []
  },
  mutations: {
    TOGGLE_MENU (state) {
      // 导航菜单 展开和关闭
      state.navCollapse = !state.navCollapse
    },
    // 增加 navTab
    ADD_TAB (state, tab) {
      /*
        tab是对象
        {
          name: '增加商品',
          path: '/xxxx'
        }
      */
      /*
        插入之前判断
          1 是够已经有当前 tab 有不插入
          2 是否是 /dashBorad 仪表盘是不插入
      */
      const index = state.navTabs.findIndex(_tab => (
        _tab.path === tab.path
      ))
      if (index !== -1) {
        return false
      }
      state.navTabs.push(tab)
      // 缓存备份
      sessionStorage.setItem('navTabs', JSON.stringify(state.navTabs))
    },
    // 删除当前navTab
    DELETE_TAB (state, index) {
      state.navTabs.splice(index, 1)
      // 当前导航tab删除后，跳转到 数组的 上一个 tab对应的路由中 （其实就是跳转到 数组的最后一个tab的path）
      // 已经全部删除时 需要跳转到 仪表盘
      if (state.navTabs.length === 0) {
        router.push('/dashBoard')
      } else {
        router.push(state.navTabs[state.navTabs.length - 1].path)
      }
      sessionStorage.setItem('navTabs', JSON.stringify(state.navTabs))
    },
    // 删除其他tab
    DEL_OTHER_TAB (state, index) {
      state.navTabs = state.navTabs.filter((tab, i) => {
        return i === index
      })
      // 跳转到当前没删除的导航
      router.push(state.navTabs[0].path)
      sessionStorage.setItem('navTabs', JSON.stringify(state.navTabs))
    },
    // 全部删除
    DEL_ALL_TAB (state) {
      // 全部删除
      state.navTabs = []
      // 跳转到dashBoard
      router.push('/dashBoard')
      sessionStorage.setItem('navTabs', JSON.stringify(state.navTabs))
    }
  }
}
